package dc.singleNumber;

public class Permutation {

//	void genComb(int index,int start,int N){
//	    if(index == M+1){
//	        for(int i = 1 ; i <= M ; i++)
//	             cout <<   comb[i] << " ";
//	        cout << endl;      
//	        return;
//	    }
//	    for(int i = start ; N - i >= M - index ; i++){
//	        comb[index] = i;
//	        genComb(index+1,i+1,N);
//	    }
//	}
	
	public static void recurPerm(int array[],int index,int N){
	    if(index == N){
	        for(int i = 0 ; i < N ; i++){
	        	System.out.print(array[i]+" ");
	        }
	        System.out.println();
	        return;
	    }
	    for(int i = index ; i < N ; i++){
	        int temp = array[index];
	        array[index] = array[i];
	        array[i] = temp;

	        recurPerm(array,index+1,N);

	        temp = array[index];
	        array[index] = array[i];
	        array[i] = temp;
	        
	    }
	}
	
	public static void main(String[] args){
		int[] array = {1,2,3,4};
	    recurPerm(array,0,4);
	}
}
